-
Notifications
You must be signed in to change notification settings - Fork 4
feat: add deep link support #268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis set of changes introduces deep link support to the EID Wallet application, enabling it to read and process incoming deep link URLs. Supporting configuration, dependency, and code updates are included, alongside unrelated refactors in the Pictique platform (renaming Changes
Sequence Diagram(s)sequenceDiagram
participant OS
participant EIDWalletApp
participant DeepLinkPlugin
OS->>EIDWalletApp: Launch app with deep link URL (w3ds://...)
EIDWalletApp->>DeepLinkPlugin: getCurrent()
DeepLinkPlugin-->>EIDWalletApp: Return deep link URL(s)
EIDWalletApp->>EIDWalletApp: Parse and validate deep link
EIDWalletApp->>EIDWalletApp: Navigate to /scan-qr with deep link params
EIDWalletApp->>EIDWalletApp: (scan-qr page) Parse method/params from deep link
EIDWalletApp->>EIDWalletApp: Validate and process method (e.g., auth)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15 minutes Assessment against linked issues
Suggested reviewers
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. 📜 Recent review detailsConfiguration used: CodeRabbit UI ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🔭 Outside diff range comments (1)
infrastructure/eid-wallet/src-tauri/Cargo.toml (1)
32-37
: Replace the Git SHA with the crates.io release for tauri-plugin-deep-linkWe checked and found no
v2.4.1
tag in the plugins-workspace repo, but crates.io publishestauri-plugin-deep-link
v2.4.1. To ensure reproducible builds and faster fetches, switch to the crates.io release:• File:
infrastructure/eid-wallet/src-tauri/Cargo.toml
(around lines 32–37)[target.'cfg(any(target_os = "android", target_os = "ios"))'.dependencies] tauri-plugin-barcode-scanner = "2" tauri-plugin-biometric = "2.2.0" tauri-plugin-crypto-hw = "0.1.0" -tauri-plugin-deep-link = { git = "https://github.com/sosweetham/plugins-workspace", rev = "0668697" } +tauri-plugin-deep-link = "2.4.1"If you still need a Git dependency, you’ll first have to create and push a matching tag in the repository before pinning to it.
🧹 Nitpick comments (4)
db.compose.yml (1)
1-12
: Consider pinning the image tag & adding basic hardeningNice, minimal dev-DB setup. A few tweaks make it more robust without hurting DX:
- image: postgres:16 + # Pin minor version for reproducible builds + image: postgres:16.3 + # Keep the service up across Docker restarts + restart: unless-stopped + + # Simple readiness probe so dependants can `depends_on` with `condition: service_healthy` + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"] + interval: 10s + timeout: 5s + retries: 5Optional, but gives deterministic builds, automatic restart and a ready-signal for other services.
(For secrets: since this is dev only, plain-text creds are fine; for prod move them to a.env
/Docker secret.)index.html (1)
1-1
: Add minimal HTML boilerplate & safe-navigation attributesThe file currently contains only a bare anchor tag.
If this is meant to be rendered in a browser (e.g. as a demo page) consider wrapping it in a minimal document structure and, for custom-scheme links, addrel="noopener"
(and optionallytarget="_blank"
) to avoid the trivial reverse-tab-nabbing issue.-<a href="w3ds://auth">CLICK ME</a> +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Deep-link demo</title> + </head> + <body> + <a href="w3ds://auth" rel="noopener">CLICK ME</a> + </body> +</html>infrastructure/eid-wallet/package.json (1)
30-30
: Ensure JS & Rust plugin versions stay in lock-step
@tauri-apps/plugin-deep-link@^2.4.1
matches the latest 2.x line.
After switching the Rust side away from a git-sha (see Cargo.toml comment) keep both ends on the same minor version to avoid ABI mismatches.infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1)
16-19
: Consider removing unused import.The
onOpenUrl
function is imported but not used in this component. Consider removing it to keep imports clean, or implement the deep link URL handling if it's intended for this component.import { getCurrent, - onOpenUrl } from '@tauri-apps/plugin-deep-link'
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (16)
infrastructure/eid-wallet/src-tauri/Cargo.lock
is excluded by!**/*.lock
infrastructure/eid-wallet/src-tauri/gen/android/.idea/AndroidProjectSystem.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/Project.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/codeStyleConfig.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/compiler.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/deploymentTargetSelector.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/deviceManager.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/gradle.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/migrations.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/misc.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/runConfigurations.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/.idea/vcs.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml
is excluded by!**/gen/**
infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/java/foundation/metastate/eid_wallet/MainActivity.kt
is excluded by!**/gen/**
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (10)
.gitignore
(1 hunks)db.compose.yml
(1 hunks)index.html
(1 hunks)infrastructure/eid-wallet/package.json
(1 hunks)infrastructure/eid-wallet/src-tauri/Cargo.toml
(1 hunks)infrastructure/eid-wallet/src-tauri/Info.ios.plist
(1 hunks)infrastructure/eid-wallet/src-tauri/capabilities/mobile.json
(1 hunks)infrastructure/eid-wallet/src-tauri/src/lib.rs
(1 hunks)infrastructure/eid-wallet/src-tauri/tauri.conf.json
(1 hunks)infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (2)
Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.
Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which introduces the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.
🔇 Additional comments (5)
.gitignore (1)
43-44
: Addition looks good – keeps local DB state out of VCSIgnoring
/db/data
is the right scope: the compose file remains version-controlled while preventing the (potentially large) PostgreSQL volume from polluting the repo history.
No further action needed.infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1)
11-12
: Permission addition looks good
"deep-link:default"
is correctly appended and the JSON remains valid.
No further action required.infrastructure/eid-wallet/src-tauri/Info.ios.plist (1)
15-24
: URL-scheme registration is correct – consider query-allow-list
CFBundleURLTypes
setup forw3ds
looks correct.
If the app intends to open externalw3ds://…
links (not just handle being launched), you may also needLSApplicationQueriesSchemes
socanOpenURL:
calls succeed on iOS ≥ 9.No change required if you never query; just flagging for completeness.
infrastructure/eid-wallet/src-tauri/tauri.conf.json (1)
27-35
: Deep link configuration looks correct.The plugin configuration properly follows Tauri's deep-link plugin structure with the custom "w3ds" scheme for mobile platforms. The JSON syntax and nesting are correct.
infrastructure/eid-wallet/src-tauri/src/lib.rs (1)
39-39
: Plugin initialization follows correct pattern.The deep link plugin is properly initialized alongside other plugins using the standard Tauri plugin initialization pattern.
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (2)
index.html (1)
2-2
: Add missing newline at end of file.The file should end with a newline character for better compatibility and to follow standard conventions.
<a href="w3ds://auth?redirect=https://blabsy.w3ds.metastate.foundation/api/auth&session=8854f847-6b80-4df0-bb94-68fb9a756aa4&platform=blabsy">CLICK ME</a> +
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)
73-76
: Remove commented code.Clean up the commented code blocks that are no longer needed.
- // const url = new URL(urls[0]) - // console.log(url) - // if (url.protocol)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
index.html
(1 hunks)infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
(3 hunks)infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
(3 hunks)infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (3)
Learnt from: Sahil2004
PR: #193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from $lib/types
over importing interfaces from component files for better type organization and to avoid circular dependencies.
Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.
Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which introduces the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Outdated
Show resolved
Hide resolved
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Outdated
Show resolved
Hide resolved
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🔭 Outside diff range comments (1)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)
90-97
: Remove duplicate greeting assignment logic.This greeting assignment logic is duplicated from the nested onMount function above and will override the greeting set by the duplicated logic.
- const currentHour = new Date().getHours(); - greeting = - currentHour > 17 - ? "Good Evening" - : currentHour > 12 - ? "Good Afternoon" - : "Good Morning";
♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)
78-88
: Improve URL parsing and error handling for deep links.The current implementation has the same issues previously identified: manual string splitting is fragile, error logging continues execution, and the approach is not robust for malformed URLs.
Apply the previously suggested fix:
- const urls = await getCurrent(); - if (urls && urls.length > 0) { - const url = urls[0]; - const [scheme, ...rest] = url.split("://"); - const deeplink = rest.join("://"); - console.log("URL", scheme, deeplink); - if (scheme !== "w3ds") { - console.error("unsupported url scheme"); - } - goto(`/scan-qr?${deeplink}`); - } + const urls = await getCurrent(); + if (urls && urls.length > 0) { + try { + const urlString = urls[0]; + const url = new URL(urlString); + + if (url.protocol !== "w3ds:") { + console.error("Unsupported URL scheme:", url.protocol); + return; + } + + // Extract the path and search params for navigation + const deeplink = urlString.substring(url.protocol.length + 2); // Remove "w3ds://" + goto(`/scan-qr?${deeplink}`); + } catch (error) { + console.error("Invalid deep link URL:", error); + } + }
🧹 Nitpick comments (1)
platforms/pictique/src/routes/(protected)/post/+page.svelte (1)
44-48
: Remove commented code for cleaner codebase.Since the related imports have been removed and the functionality is no longer needed, consider removing this commented code block entirely rather than leaving it as dead code.
- <!-- <SettingsTile - title="Who can see your posts?" - currentStatus={audience.value} - onclick={() => goto('/post/audience')} - /> -->
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
infrastructure/eid-wallet/src-tauri/tauri.conf.json
(1 hunks)infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
(3 hunks)infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
(2 hunks)infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
(1 hunks)platforms/pictique/src/routes/(protected)/post/+page.svelte
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- infrastructure/eid-wallet/src-tauri/tauri.conf.json
- infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1)
Learnt from: coodos
PR: #99
File: infrastructure/w3id/tests/w3id.test.ts:48-57
Timestamp: 2025-04-16T18:04:28.983Z
Learning: In test files, suggestions to add defensive coding patterns (like extra null checks) are often unnecessary, as tests are designed to fail explicitly when expectations aren't met. The test in infrastructure/w3id/tests/w3id.test.ts
validates that id.logs
is an instance of IDLogManager
before accessing its repository property.
🔇 Additional comments (1)
platforms/pictique/src/routes/(protected)/post/+page.svelte (1)
2-3
: LGTM! Clean import removal.The removal of unused imports (
goto
,SettingsTile
,audience
) properly aligns with the commented out functionality below and reduces unnecessary dependencies.
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Outdated
Show resolved
Hide resolved
@Sahil2004 can you fix the coderabbit comments |
@coodos post that you'd have to merge as i cant approve and merge being the author of the pr |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (1)
100-108
: Critical: Fragile URL parsing logic persists.The deep link parsing implementation still uses the fragile string splitting approach that was flagged in previous reviews. This manual parsing is error-prone and doesn't handle edge cases properly.
Apply this refactor to use proper URL parsing APIs:
- const [_empty, ...rest] = page.url.search.split("?"); - const methodAndParam = rest.join("?"); - const [method, ...param] = methodAndParam.split("?"); - const data = param.join("?"); - const deeplinkMethodSpecifiers = ["auth"]; - if (method && !deeplinkMethodSpecifiers.includes(method)) { - console.error("Unknown method specifier"); - } + const searchParams = page.url.searchParams; + const deepLinkData = page.url.search.substring(1); // Remove leading '?' + + if (deepLinkData) { + const [method, ...paramParts] = deepLinkData.split('?'); + const deeplinkMethodSpecifiers = ["auth"]; + if (method && !deeplinkMethodSpecifiers.includes(method)) { + console.error("Unknown method specifier:", method); + return; + }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
(3 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (5)
3-3
: LGTM: Import update for page access.The import change from
$app/stores
to$app/state
is appropriate for accessing the current page URL in the deep link parsing logic.
32-34
: LGTM: Explicit typing for state variables.Adding explicit
string | null
typing toplatform
,hostname
, andsession
variables improves type safety and makes the nullable nature of these variables clear.
119-133
: LGTM: Platform and session validation added.The validation for platform name format (alphanumeric with allowed special characters) and UUID format for session is well-implemented and addresses the security concerns raised in previous reviews.
149-149
: LGTM: Conditional scanning implementation.The conditional call to
startScan()
only whencodeScannedDrawerOpen
is false properly addresses the previous review concern about unconditional scanning when a deep link is processed.
144-146
: LGTM: Deep link processing state management.Setting
codeScannedDrawerOpen = true
andscanning = false
when a valid deep link is processed correctly prepares the UI state for the authentication flow.
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Outdated
Show resolved
Hide resolved
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Outdated
Show resolved
Hide resolved
* feat: setup control-panel project, added-colors same as eid-wallet * feat: group * fix: separate page added for members * chore: added dummy data and commented the protection on routes for development purposes. * feat: added view participants button. * feat: added participants modal * feat: group * feat: group-charter-manager * feat: added nanoid * feat: added context menu and the owner or admin status * feat: added context menu functionality on frontend. * fix: lock file * fix: added a edit modal * chore: renamed to member. * fix: responsiveness * fix: responsiveness * feat: added group settings page. * fix: role based editing * feat: show info and not allow edits when not a group admin or owner. * fix: user role based edit in group info * fix: edit image with pencil icon * fix: added a text area * feat: new group functionality and textarea fixed * feat: new group functionality and textarea fixed * feat: added close icon on dialog boxes for accessibility improvement. * feat: removed save and close button on group settings for non admin or non owner users. * feat: added add members button. * feat: added add members component. * feat: added relevant checks. * feat: added icons next to owner and admin. * feat: added new chat button. * chore: fixed squigglies. * feat: added new chat flow. * chore: trimed down the non-required code and made a new next js project group charter manager. * feat: added working 404 page with some changes. * feat: fixed and added /dashboard route * chore: upgraded tailwind v3 to v4 in old group charter * chore: copied old index.css to new global.css * chore: added missing dependencies for tailwindcss * chore: upgraded new charter app's whole codebase to tailwind v4 * chore: moved dashboard page to correct route * feat: added new charter page * feat: added single charter page. * feat: added /charter/:id/edit route * chore: removed old charter codebase. * feat: eVoting * chore: project moved to platforms * chore: created a new next app and moved the older to the old folder * chore: moved the old to old dir. * chore: migrated old project to tailwindcss v4 * feat: added components and other stuff to the new proj. * feat: added the not found page. * feat: added homepage. * feat: added create page. * feat: added vote/id page. * chore: remove the old evoting proj. * feat: add a button, modal for sign charter * fix: lock file * fix: lock file --------- Co-authored-by: Sahil Garg <[email protected]> Co-authored-by: Merul Dhiman <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
platforms/group-charter-manager/package.json (1)
10-10
: Add an auto-fix variant of the formatting script
prettier --check .
only reports problems; when teams adopt Prettier it’s common to pair it with a--write
script so contributors can fix issues quickly without having to remember the exact CLI flags each time."lint": "next lint", "format": "prettier --check .", + "format:fix": "prettier --write ."
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (82)
infrastructure/control-panel/.storybook/main.ts
(1 hunks)infrastructure/control-panel/.storybook/preview.ts
(1 hunks)infrastructure/control-panel/src/app.css
(1 hunks)platforms/blabsy/src/components/chat/chat-window.tsx
(1 hunks)platforms/group-charter-manager/.prettierignore
(1 hunks)platforms/group-charter-manager/.prettierrc.json
(1 hunks)platforms/group-charter-manager/eslint.config.mjs
(1 hunks)platforms/group-charter-manager/next.config.ts
(1 hunks)platforms/group-charter-manager/package.json
(1 hunks)platforms/group-charter-manager/postcss.config.mjs
(1 hunks)platforms/group-charter-manager/src/app/charter/[id]/edit/page.tsx
(17 hunks)platforms/group-charter-manager/src/app/charter/[id]/page.tsx
(23 hunks)platforms/group-charter-manager/src/app/create/page.tsx
(14 hunks)platforms/group-charter-manager/src/app/globals.css
(2 hunks)platforms/group-charter-manager/src/app/layout.tsx
(1 hunks)platforms/group-charter-manager/src/app/not-found.tsx
(1 hunks)platforms/group-charter-manager/src/app/page.tsx
(7 hunks)platforms/group-charter-manager/src/components/charter-card.tsx
(3 hunks)platforms/group-charter-manager/src/components/icons/certificate-ribbon.tsx
(1 hunks)platforms/group-charter-manager/src/components/layout/navbar.tsx
(1 hunks)platforms/group-charter-manager/src/components/member-avatar.tsx
(1 hunks)platforms/group-charter-manager/src/components/platform-badge.tsx
(1 hunks)platforms/group-charter-manager/src/components/stats-card.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/accordion.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/alert-dialog.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/alert.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/aspect-ratio.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/avatar.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/badge.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/breadcrumb.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/button.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/calendar.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/card.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/carousel.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/chart.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/checkbox.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/collapsible.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/command.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/context-menu.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/dialog.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/drawer.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/dropdown-menu.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/form.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/hover-card.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/input-otp.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/input.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/label.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/menubar.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/navigation-menu.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/pagination.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/popover.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/progress.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/radio-group.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/resizable.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/scroll-area.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/select.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/separator.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/sheet.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/sidebar.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/skeleton.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/slider.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/switch.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/table.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/tabs.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/textarea.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/toast.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/toaster.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/toggle-group.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/toggle.tsx
(1 hunks)platforms/group-charter-manager/src/components/ui/tooltip.tsx
(1 hunks)platforms/group-charter-manager/src/components/wysiwyg-editor.tsx
(1 hunks)platforms/group-charter-manager/src/hooks/use-mobile.tsx
(1 hunks)platforms/group-charter-manager/src/hooks/use-toast.ts
(8 hunks)platforms/group-charter-manager/src/hooks/useAuth.ts
(1 hunks)platforms/group-charter-manager/src/lib/authUtils.ts
(1 hunks)platforms/group-charter-manager/src/lib/utils.ts
(1 hunks)platforms/group-charter-manager/src/types/index.ts
(1 hunks)platforms/group-charter-manager/tsconfig.json
(1 hunks)platforms/pictique/src/lib/types.ts
(1 hunks)platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
(10 hunks)platforms/pictique/src/routes/(protected)/group/[id]/members/+page.svelte
(3 hunks)platforms/pictique/src/routes/(protected)/messages/+page.svelte
(1 hunks)
✅ Files skipped from review due to trivial changes (78)
- platforms/group-charter-manager/src/app/layout.tsx
- platforms/pictique/src/lib/types.ts
- platforms/group-charter-manager/next.config.ts
- platforms/group-charter-manager/src/components/ui/alert.tsx
- platforms/group-charter-manager/src/components/ui/collapsible.tsx
- infrastructure/control-panel/src/app.css
- platforms/group-charter-manager/src/hooks/useAuth.ts
- platforms/group-charter-manager/.prettierrc.json
- platforms/group-charter-manager/src/app/globals.css
- platforms/group-charter-manager/src/components/ui/switch.tsx
- platforms/group-charter-manager/tsconfig.json
- platforms/group-charter-manager/postcss.config.mjs
- platforms/group-charter-manager/src/hooks/use-mobile.tsx
- platforms/group-charter-manager/src/components/ui/separator.tsx
- platforms/group-charter-manager/src/components/ui/aspect-ratio.tsx
- platforms/group-charter-manager/src/components/ui/resizable.tsx
- platforms/group-charter-manager/src/components/ui/button.tsx
- infrastructure/control-panel/.storybook/preview.ts
- platforms/group-charter-manager/src/components/layout/navbar.tsx
- platforms/group-charter-manager/src/app/not-found.tsx
- platforms/group-charter-manager/src/app/create/page.tsx
- platforms/group-charter-manager/src/lib/utils.ts
- platforms/group-charter-manager/src/components/ui/slider.tsx
- platforms/pictique/src/routes/(protected)/messages/+page.svelte
- platforms/group-charter-manager/src/components/ui/hover-card.tsx
- platforms/group-charter-manager/.prettierignore
- platforms/group-charter-manager/src/components/ui/skeleton.tsx
- platforms/group-charter-manager/src/components/ui/pagination.tsx
- platforms/group-charter-manager/src/components/ui/label.tsx
- platforms/group-charter-manager/src/components/ui/select.tsx
- infrastructure/control-panel/.storybook/main.ts
- platforms/group-charter-manager/src/components/ui/table.tsx
- platforms/group-charter-manager/src/components/platform-badge.tsx
- platforms/group-charter-manager/src/components/ui/scroll-area.tsx
- platforms/group-charter-manager/src/components/ui/accordion.tsx
- platforms/group-charter-manager/src/components/ui/radio-group.tsx
- platforms/group-charter-manager/src/components/ui/avatar.tsx
- platforms/group-charter-manager/src/components/ui/checkbox.tsx
- platforms/group-charter-manager/src/components/ui/progress.tsx
- platforms/group-charter-manager/src/components/ui/badge.tsx
- platforms/group-charter-manager/src/components/ui/toast.tsx
- platforms/group-charter-manager/src/components/ui/input-otp.tsx
- platforms/group-charter-manager/src/components/ui/textarea.tsx
- platforms/group-charter-manager/src/components/wysiwyg-editor.tsx
- platforms/group-charter-manager/src/components/ui/tabs.tsx
- platforms/group-charter-manager/src/app/charter/[id]/edit/page.tsx
- platforms/group-charter-manager/src/components/ui/sheet.tsx
- platforms/group-charter-manager/src/components/ui/toaster.tsx
- platforms/group-charter-manager/src/components/ui/toggle.tsx
- platforms/group-charter-manager/src/components/ui/navigation-menu.tsx
- platforms/group-charter-manager/eslint.config.mjs
- platforms/group-charter-manager/src/components/ui/dropdown-menu.tsx
- platforms/group-charter-manager/src/components/ui/toggle-group.tsx
- platforms/group-charter-manager/src/components/member-avatar.tsx
- platforms/group-charter-manager/src/components/ui/form.tsx
- platforms/pictique/src/routes/(protected)/group/[id]/members/+page.svelte
- platforms/group-charter-manager/src/components/ui/input.tsx
- platforms/group-charter-manager/src/components/icons/certificate-ribbon.tsx
- platforms/group-charter-manager/src/components/stats-card.tsx
- platforms/group-charter-manager/src/lib/authUtils.ts
- platforms/group-charter-manager/src/components/ui/drawer.tsx
- platforms/group-charter-manager/src/components/ui/tooltip.tsx
- platforms/group-charter-manager/src/components/ui/popover.tsx
- platforms/group-charter-manager/src/components/ui/context-menu.tsx
- platforms/group-charter-manager/src/components/ui/card.tsx
- platforms/group-charter-manager/src/components/ui/alert-dialog.tsx
- platforms/group-charter-manager/src/app/page.tsx
- platforms/group-charter-manager/src/components/ui/carousel.tsx
- platforms/group-charter-manager/src/components/ui/breadcrumb.tsx
- platforms/group-charter-manager/src/components/ui/calendar.tsx
- platforms/group-charter-manager/src/components/ui/menubar.tsx
- platforms/group-charter-manager/src/components/ui/dialog.tsx
- platforms/group-charter-manager/src/components/ui/command.tsx
- platforms/group-charter-manager/src/types/index.ts
- platforms/group-charter-manager/src/components/ui/sidebar.tsx
- platforms/group-charter-manager/src/components/charter-card.tsx
- platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
- platforms/group-charter-manager/src/components/ui/chart.tsx
🔇 Additional comments (4)
platforms/group-charter-manager/src/hooks/use-toast.ts (1)
1-191
: Stylistic improvements look good, but check PR scope.The conversion from double quotes to single quotes throughout the file improves code consistency and aligns with the broader style standardization effort mentioned in the summary.
However, this file appears unrelated to the PR's stated objective of adding deep link support. Please verify that:
- This change was intentionally included in this PR
- No deep link-related files are missing from the review
- The toast functionality doesn't have a role in deep link handling
Likely an incorrect or invalid review comment.
platforms/group-charter-manager/package.json (1)
45-46
: Verify plugin loading with Prettier 3Prettier 3 no longer autoloads plugins.
Make sure.prettierrc.json
explicitly declares:{ "plugins": ["prettier-plugin-tailwindcss"] }Without this,
prettier-plugin-tailwindcss
will be ignored and class ordering won’t be enforced.platforms/group-charter-manager/src/app/charter/[id]/page.tsx (2)
1-951
: Inconsistency between PR objectives and file changes.The PR objectives indicate this pull request adds "deep link support" functionality, but this file contains only stylistic changes (converting double quotes to single quotes). There are no deep link-related imports, components, or logic modifications in this charter detail page.
Please verify if:
- This file should contain deep link functionality that's missing
- This file was incorrectly included in the deep link PR
- The deep link functionality is implemented in other files not shown in this review
#!/bin/bash # Search for deep link related code in the repository echo "Searching for deep link related code..." rg -i "deep.?link|w3ds|url.?scheme" --type ts --type tsx --type js --type jsx -A 3 -B 1 echo -e "\nSearching for URL handling or routing changes..." rg -i "useRouter|router\.push|href.*://" --type ts --type tsx --type js --type jsx -A 2 -B 1 echo -e "\nSearching for EID-W related code..." rg -i "eid.?w|eid.wallet" --type ts --type tsx --type js --type jsx -A 2 -B 1Likely an incorrect or invalid review comment.
1-951
: Code formatting changes look consistent.The quote style conversion from double to single quotes has been applied consistently throughout the file, including:
- JSX attributes (
className
,href
, etc.)- String literals in objects and arrays
- Import/export statements
- Template strings and inline text
The formatting appears to align with the new Prettier configuration mentioned in the AI summary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (8)
infrastructure/control-panel/package.json
(1 hunks)platforms/pictique/src/lib/fragments/Profile/Profile.svelte
(2 hunks)platforms/pictique/src/lib/stores/users.ts
(1 hunks)platforms/pictique/src/lib/types.ts
(1 hunks)platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
(13 hunks)platforms/pictique/src/routes/(protected)/home/+page.svelte
(1 hunks)platforms/pictique/src/routes/(protected)/messages/+page.svelte
(2 hunks)platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
(1 hunks)
✅ Files skipped from review due to trivial changes (4)
- infrastructure/control-panel/package.json
- platforms/pictique/src/lib/fragments/Profile/Profile.svelte
- platforms/pictique/src/lib/stores/users.ts
- platforms/pictique/src/routes/(protected)/home/+page.svelte
🚧 Files skipped from review as they are similar to previous changes (2)
- platforms/pictique/src/routes/(protected)/messages/+page.svelte
- platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
platforms/pictique/src/lib/types.ts (2)
Learnt from: Sahil2004
PR: #193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from $lib/types
over importing interfaces from component files for better type organization and to avoid circular dependencies.
Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: lint
🔇 Additional comments (5)
platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte (1)
1-143
: Inconsistent with stated PR objectives.The changes in this file relate to user identity standardization (username → handle) for the Pictique platform, but the PR objectives state this is for adding "deep link support" to the "EID-W component". This appears to be a mismatch between the PR description and actual changes.
Likely an incorrect or invalid review comment.
platforms/pictique/src/lib/types.ts (4)
1-117
: Inconsistent with stated PR objectives.Similar to the other file, these changes are related to messaging/chat functionality and user identity standardization for the Pictique platform, not deep link support for EID-W components as stated in the PR objectives.
Likely an incorrect or invalid review comment.
1-1
: Quote style consistency.Good practice to maintain consistent quote styles. The change from single to double quotes aligns with the rest of the file.
60-70
: Consistent user identity standardization.The
userProfile
type updates correctly reflect the user identity standardization:
userId
→id
(more concise)username
→handle
(consistent with platform terminology)userBio
→description
(clearer naming)- Added
name
property (enhanced user data)This aligns with the retrieved learning about using centralized type definitions from
$lib/types
.
83-116
: Messaging types verification completed.All new messaging types are correctly imported and used in the messaging components:
- In
platforms/pictique/src/routes/(protected)/messages/+page.svelte
•import type { ChatInfo, Member, MessageInfo, GroupInfo } from '$lib/types';
•let messages = $state<MessageInfo[]>([]);
• API call typed as<{ chats: ChatInfo[] }>
•let allMembers = $state<Member[]>([]);
The
Participant
type is referenced withinChatInfo
and does not require its own import in this file.Approving these changes.
Description of change
adds deep link support to the app
Issue Number
closes #267
Type of change
How the change has been tested
manual;
Change checklist
Summary by CodeRabbit
New Features
Enhancements
Refactor
username
tohandle
throughout the Pictique platform, affecting types, components, and data structures for consistency.handle
property.Bug Fixes
handleContinue
function in the eid-wallet verification page to prevent potential runtime errors.Chores
.gitignore
and Prettier configuration files in multiple directories.